package com.ophiux.compoments;

import java.util.Set;
import java.util.concurrent.TimeUnit;

import org.springframework.data.redis.core.RedisTemplate;



public class RedisComponent 
{

	private static RedisTemplate<String, Object> redisTemplate;
	
	/**
	 * 
	 * Description: 生成DataComponent接口对象
	 * @param dbcp
	 */
	@SuppressWarnings("static-access")
	public RedisComponent(RedisTemplate redisTemplate)
	{
		
		if(redisTemplate!=null)
		{
			this.redisTemplate=redisTemplate;
		}
	}
	public static String getNext() 
	{
		
		System.out.println(redisTemplate.hashCode());
		
		return null;
	}
	 /**
	  * 
	  * Description: 获得表的序列<br>
	  * 创 建 人: sunrise
	  * 创建日期:2018年5月3日 下午5:44:42
	  * @param table
	  * @param delta
	  * @return
	  */
    public static long getTableNextSeq(TableEnum table){    
         
        return redisTemplate.opsForValue().increment("system:TableSeq:"+table.toString(), 1);  
    } 
    
    public static long getTableNextSeq(String table){    
        
        return redisTemplate.opsForValue().increment("system:TableSeq:"+table, 1);  
    } 
    
    /**
     * 
     * Description: 获得表的序列<br>
     * 创 建 人: sunrise
     * 创建日期:2018年9月9日 上午12:21:12
     * @param table
     * @return
     */
    public static String getTableID(TableEnum TableEnum){    
        
        return redisTemplate.opsForValue().increment("system:TableSeq:"+TableEnum.toString(), 1)+"";  
    }
    /**
     * 
     * Description: map存储<br>
     * 创 建 人: sunrise
     * 创建日期:2018年5月21日 下午5:32:06
     * @param key
     * @param hashKey
     * @param value
     */
    public static void setMapData(String key,String hashKey,Object value) 
    {
    	redisTemplate.opsForHash().put(key, hashKey, value);
    	
    }
    /**
     * 
     * Description:map取值 <br>
     * 创 建 人: sunrise
     * 创建日期:2018年5月21日 下午5:32:28
     * @param key
     * @param hashKey
     */
    public static Object getMapData(String key,String hashKey) 
    {
    	
    	return redisTemplate.opsForHash().get(key, hashKey);
    	
    }
    
    public static void setSetData(String key,Object data) 
    {
    	redisTemplate.opsForSet().add(key, data);
    	
    	Object dd = redisTemplate.opsForValue().get(key);
    	System.out.println(" get "+dd);
//    	redisTemplate.expire("xgy:ai:jay", 100, TimeUnit.SECONDS);
    }
   
    
    public static void setObject(String key,long timeOut,Object data) 
    {
    	redisTemplate.opsForValue().set(key, data);
    	redisTemplate.expire(key, timeOut, TimeUnit.SECONDS);
    	
    }
    public static void romoveObject(String key) 
    {
    	redisTemplate.delete(key);
    }
    public static Object getObject(String key) 
    {
    	
    	Object obj = redisTemplate.opsForValue().get(key);
    	return obj;
    }
    /**
     * 
     * Description:模糊查找 Key<br>
     * 创 建 人: sunrise
     * 创建日期:2018年6月22日 上午9:48:57
     * @param key
     * @return
     */
    public static Set<String> findKeys(String key) 
    {
    	
    	Set<String> keys= redisTemplate.keys(key);
    	return keys;
    }
}
